<?php

namespace app\controllers;

use Yii;
use yii\web\Controller;

class HttpCacheController extends Controller
{
    /**
     * Behaviors
     *
     * @return mixed
     */
    public function behaviors()
    {
//        return [
//            [
//                'class' => 'yii\filters\HttpCache',
//                'only' => ['index'],
//                //'lastModified'最后一次的修改时间，和浏览器做比对
//                'lastModified' => function () {
//
//                    return 1432817569;
//                },
//                //etag 缓存比对，倾向于内容是否一致
//                'etagSeed' => function () {
//
//                    return 'etagseed3';
//                },
//                //首先判断lastModified是否一致，如果一样，则返回304状态码
//                //如果不一致，再判断etag，如果etag一样，则还是304，如果etag不一致
//                //则服务器重新响应请求，返回200的状态码
//
//            ]
//        ];

        return [
            [
                'class' => 'yii\filters\HttpCache',
                'lastModified' => function () {
                    //获取文件的修改时间，并返回时间戳
                    return filemtime('hw.txt');
                },
                'etagSeed' => function () {
                    //读取文件中的第一行即标题位置，是否发生了变化
                    $fp = fopen('hw.txt', 'r');
                    $title = fgets($fp);
                    fclose($fp);
                    return $title;
                }
            ]
        ];
    }

    /**
     * Http cache test
     *
     * @return string
     */
    public function actionIndex()
    {
        return $this->renderPartial('index');
    }

    /**
     * A Http cache example
     *
     * @return mixed
     */
    public function actionTest()
    {
        $content = file_get_contents('hw.txt');
        return $this->renderPartial('test', ['content' => $content]);
    }
}